/**
 * タイムレース集計（詳細）個人競技画面 コントローラ
 */
APP.controller('AnyTimeraceTeamListCtrl', function($http, $window, $timeout) {
  
  // thisを保持（Ajax内のthisと混同を防ぐ為）
  const pthis = this;
  // HTMLファイル名取得
  const fileName = window.location.href.split('/').pop().split(".html").shift();

  /**
   * 初期処理
   */
  pthis.Initialize = function () {

    // 表示用データをクリア
    pthis.datTaikai = [];
    pthis.datTimeraceShukei = [];
    pthis.datRekidaiKiroku = undefined;
    pthis.prmRekidai = "";
    pthis.rekidaiflg = false;
    pthis.firstflg = true;


    // Promiseを使用しJSONを並列取得し、表示処理を実施する
    Promise.all([new Promise(function (resolve, reject) {

      //=== 大会情報JSONの取得を行う
      $http({
        method  : AJAX_METHOD_GET,
        url     : '../../Taikai.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 大会情報データ
        pthis.datTaikai = response.data;
        resolve();
      }, function errorCallback(response) {
        reject();
      });

    }), new Promise(function (resolve, reject) {

      //=== 任意タイムレース集計（詳細）競技画面 一覧JSONの取得を行う
      $http({
        method  : AJAX_METHOD_GET,
        url     : './'+fileName+'.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 全任意タイムレース集計（詳細）競技データ
        pthis.datTimeraceShukei = response.data;
        resolve();
      }, function errorCallback(response) {
        reject();
      });

    })]).then(function () {
      // 記録表示を更新する
      $("#kirokuview").change();

      //=== 歴代記録ダイアログ用JSONを取得
      $http({
        method  : AJAX_METHOD_GET,
        url     : '../../rekidai/RekidaiKiroku.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 全歴代記録
        pthis.datRekidaiKirokuAll = response.data.RekidaiKirokuList;

        // キーを決定する(kyogino-subno)
        let RekidaiKirokuKey;
        for(let a in pthis.datTimeraceShukei.RekidaiKyogiList){
          if(a.indexOf('undefined') != -1){
            $("select[name='prmRekidai']").find(`option[value='${a}']`).remove();
            continue;
          }
          if(a in pthis.datRekidaiKirokuAll){
            pthis.rekidaiflg = true;
            $("select[name='prmRekidai']").val(a);// 初期値に存在しない値の場合エラーになるので修正（Web状況に合わせるために初期表示時に存在しない値に切り替えなおす）
            RekidaiKirokuKey = a;break;
          }
        }
        pthis.prmRekidai = RekidaiKirokuKey;
        // 初期表示  歴代記録データ
        pthis.datRekidaiKiroku = pthis.datRekidaiKirokuAll[RekidaiKirokuKey];
      }, function errorCallback(response) {
        // JSON取得エラー
      });
        
    }).catch(function () {
      // JSON取得エラー
    });

  };

  /**
   * 歴代記録ボタンクリックイベント
   */
  pthis.ShowRekidai = function () {

    // 歴代記録ダイアログを表示する
    RekidaiDialogShow();
    // if (!!pthis.datRekidaiKiroku) {
    //   RekidaiDialogShow();
    // }
    if(pthis.firstflg){// Webk状況に合わせるため無理やり最初の競技にする
      pthis.prmRekidai = $("select[name='prmRekidai']").find(`option`).eq(0).val();
      pthis.ChangeRekidai();
      pthis.firstflg = false;
    }

  }

  /**
   * 歴代記録ダイアログ競技チェンジイベント
   */
  pthis.ChangeRekidai = function () {
    // 歴代記録データ
    pthis.datRekidaiKiroku = pthis.datRekidaiKirokuAll[pthis.prmRekidai];

  }

  // 初期処理を実行
  pthis.Initialize();

});

$(function() {
  // 1 / 100 と 1 / 1000 の切り替えイベント
  $('#kirokuview').on('change',function(){
    const c = $(this).val();
    $('td.Kiroku').each(function(i, e) {
      $(e).html($(e).attr(c));
    });
  });

  // 順位・レーンの切り替え時に記録表示を変更
  $('input[name="prmSort"]').on('change',function(){
    $('#kirokuview').change();
  });
});